Robotics simulator
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
A robotics simulator is a simulator used to create an application for a physical robot without depending on the physical machine, thus saving cost and time. In some case, such applications can be transferred onto a physical robot (or rebuilt) without modification.
The term robotics simulator can refer to several different robotics simulation applications. For example, in mobile robotics applications, behavior-based robotics simulators allow users to create simple worlds of rigid objects and light sources and to program robots to interact with these worlds. Behavior-based simulation allows for actions that are more biotic in nature when compared to simulators that are more binary, or computational. Also, behavior-based simulators may learn from mistakes and can demonstrate the anthropomorphic quality of tenacity.
One of the most popular applications for robotics simulators is for 3D modeling and rendering of a robot and its environment. This type of robotics software has a simulator that is a virtual robot, which can emulate the motion of a physical robot in a real work envelope. Some robotics simulators use a physics engine for more realistic motion generation of the robot. The use of a robotics simulator to develop a robotics control program is highly recommended regardless of whether a physical robot is available or not. The simulator allows for robotics programs to be conveniently written and debugged off-line with the final version of the program tested on a physical robot. This applies mainly to industrial robotic applications, since the success of off-line programming depends on how similar the physical environment of a robot is to a simulated environment.
Sensor-based robot actions are much more difficult to simulate and/or to program off-line, since the robot motion depends on instantaneous sensor readings in the real world.
Contents
• Features
• Features
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Features
Modern simulators tend to provide the following features:
• Fast robot prototyping:
• Using the own simulator as creation tool
• Using external tools
• Realistic 3d rendering: Standard 3d modeling tools or third-party tools can be used to build the environments.
Simulators
Among the newest technologies available today for programming are those which use a virtual simulation. Simulations with the use of virtual models of the working environment and the robots themselves can offer advantages to both the company and programmer. By using a simulation, costs are reduced, and robots can be programmed off-line which eliminates any down-time for an assembly line. Robot actions and assembly parts can be visualized in a three-dimensional virtual environment months before prototypes are even produced. Writing code for a simulation is also easier than writing code for a physical robot. While the move toward virtual simulations for programming robots is a step forward in user interface design, many such applications are only in their infancy.
General information
| Software | Developers | Development status | License | 3D rendering engine | Physics engine | 3D modeller | Platforms supported |
|---|---|---|---|---|---|---|---|
| Gazebo | Open Source Robotics Foundation (OSRF) | Active | Apache 2.0 | OGRE | ODE , Bullet , Simbody, DART | Internal | Linux, macOS, Windows |
| RoboDK | RoboDK | Active | Proprietary | OpenGL | Gravity plug-in | Internal | Linux, macOS, Windows, Android, iOS, Debian |
| SimSpark | O. Obst et al. (+26) | Active | GNU GPL (v2) | Internal | ODE | None | Linux, macOS, Windows |
| Webots | Cyberbotics Ltd. | Active | Apache 2.0 | Internal (WREN) | Fork of ODE | Internal | Linux, macOS, Windows |
| OpenRAVE | OpenRAVE Community | Active | GNU LGPL | Coin3D , OpenSceneGraph | ODE , Bullet | Internal | Linux, macOS, Windows |
| CoppeliaSim | Coppelia Robotics | Active | Dual: commercial, GNU GPL | Internal | MuJoCo, Bullet , ODE , Vortex , Newton | Internal | Linux, macOS, Windows |
| Software | Developers | Development status | License | 3D rendering engine | Physics engine | 3D modeller | Platforms supported |
Technical information
| Software | Main programming language | Formats support | Extensibility | External APIs | Robotics middleware support | Primary user interface | Headless simulation |
|---|---|---|---|---|---|---|---|
| Gazebo | C++ | SDF [ 1 ] /URDF, [ 2 ] OBJ , STL , COLLADA | Plug-ins (C++) | C++ | ROS, Player, sockets (protobuf messages) | GUI | Yes |
| RoboDK | Python | SLDPRT , SLDASM , STEP , OBJ , STL , 3DS , COLLADA , VRML , Robot Operating System URDF , Rhinoceros 3D , ... | API, [ 3 ] Plug-In Interface [ 4 ] | Python, C/C++, C#, Matlab, ... | Socket | GUI | Yes |
| SimSpark | C++, Ruby | Ruby Scene Graphs | Mods (C++) | Network ( sexpr ) | Sockets ( sexpr ) | GUI, sockets | Unknown |
| Webots | C++ | WBT, VRML , X3D , 3DS , Blender , BVH, COLLADA , FBX , STL , OBJ , URDF | API, PROTOs, plug-ins (C/C++) | C, C++, Python, Java, Matlab, ROS | Sockets, ROS, NaoQI | GUI | Yes [ 5 ] |
| OpenRAVE | C++, Python | XML , VRML , OBJ , COLLADA | Plug-ins (C++), API | C/C++, Python, Matlab | Sockets, ROS, YARP | GUI, sockets | Yes |
| CoppeliaSim | C++, Python, Lua | 3DS , Blender , COLLADA , STL , OBJ , URDF, SDF, GLTF, XML | Plug-ins (C/C++), embedded scripts (Python, Lua), remote API (C, C++, Python, Java, MATLAB, Octave), add-ons (Python, Lua) | C, C++, Python, Java, MATLAB, Octave, ROS, ROS 2.0 | Sockets, ROS, ROS 2.0, ZeroMQ | GUI | Yes |
| Software | Main programming language | Formats support | Extensibility | External APIs | Robotic middleware support | Primary user interface | Headless simulation |
Infrastructure
Support
| Software | Mailing list | API documentation | Public forum, help system | User manual | Issue tracker | Wiki | Chat |
|---|---|---|---|---|---|---|---|
| Gazebo | Yes [ 6 ] | Yes [ 7 ] | Yes [ 8 ] | Yes [ 9 ] | Yes [ 10 ] | No | |
| RoboDK | Yes [ 11 ] | Yes [ 12 ] | Yes [ 13 ] | Yes [ 14 ] | Yes [ 15 ] | No | Unknown |
| SimSpark | Yes [ 16 ] | Yes [ 17 ] | No | Yes [ 18 ] | Yes [ 19 ] | Yes [ 20 ] | Unknown |
| Webots | No | Yes [ 21 ] | Yes [ 22 ] | Yes [ 23 ] | Yes [ 24 ] | Yes [ 25 ] | Yes [ 26 ] |
| OpenRAVE | Yes [ 27 ] | Yes [ 28 ] | Yes [ 29 ] | Yes [ 30 ] | Yes [ 29 ] | Yes [ 31 ] | Unknown |
| CoppeliaSim | No | Yes [ 32 ] | Yes [ 33 ] | Yes [ 34 ] | Yes [ 35 ] | Unknown | No |
| Software | Mailing list | API documentation | Public forum, help system | User manual | Issue tracker | Wiki | |
Code quality
| Software | Static code checker | Style checker | Test system(s) | Test function coverage | Test branch coverage | Lines of code | Lines of comments | Continuous integration |
|---|---|---|---|---|---|---|---|---|
| Gazebo | cppcheck [ 36 ] | cpplint [ 36 ] | gtest and qtest [ 36 ] | 77.0% [ 36 ] | 53.3% [ 36 ] | 320k [ 36 ] | 106k [ 36 ] | Jenkins [ 36 ] |
| RoboDK | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown |
| SimSpark | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown |
| Webots | cppcheck [ 37 ] | clang-format [ 38 ] | unit tests [ 39 ] | 100% of API functions [ 40 ] | master, [ 41 ] develop [ 42 ] | ~200k | ~50k | GitHub Actions |
| OpenRAVE | Unknown | Unknown | Python nose | Unknown | Unknown | Unknown | Unknown | Jenkins [ 43 ] |
| CoppeliaSim | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown |
| Software | Static code checker | Style checker | Test system(s) | Test function coverage | Test branch coverage | Lines of code | Lines of comments | Continuous integration |
Features
| Software | CAD to motion | Dynamic collision avoidance | Relative end effectors | Off-line programming | Real-time streaming control of hardware |
|---|---|---|---|---|---|
| Gazebo | Unknown | Yes | Yes | Yes | Yes |
| RoboDK | Yes | Yes | Yes | Yes | Yes |
| SimSpark | Unknown | No | Unknown | No | No |
| Webots | Unknown | Yes | Yes | Yes | Yes |
| OpenRAVE | Unknown | No | Unknown | No | No |
| CoppeliaSim | Unknown | Yes | Yes | Yes | Yes |
| Software | CAD to motion | Dynamic collision avoidance | Relative end effectors | Off-line programming | Real-time streaming control |
Robot families
| Software | UGV (ground mobile robot) | UAV (aerial robots) | AUV (underwater robots) | Robotic arms | Robotic hands (grasping simulation) | Humanoid robots | Human avatars | Full list |
|---|---|---|---|---|---|---|---|---|
| Gazebo | Yes [ 44 ] | Yes [ 45 ] | Yes [ 46 ] | Yes [ 47 ] | Yes [ 48 ] | Yes [ 49 ] | Yes [ 50 ] | |
| RoboDK | No | No | No | Yes [ 51 ] | No | No | No | Yes [ 51 ] |
| SimSpark | Yes | No | No | Maybe | Maybe | Yes | No | |
| Webots | Yes | Yes | Yes [ 52 ] | Yes | Yes | Yes [ 53 ] | Yes | Yes [ 54 ] |
| OpenRAVE | Yes | Unknown | Unknown | Yes | Yes | Yes | Yes | |
| CoppeliaSim | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes [ 55 ] |
| Software | UGV (ground mobile robot) | UAV (aerial robots) | AUV (underwater robots) | Robotic arms | Robotic hands (grasping simulation) | Humanoid robots | Human avatars | Full list |
Supported actuators
| Software | Generic kinematic chains | Force-controlled motion | Full list | Circular kinematic chains | Kinematically redundant chains | Bifurcated kinematic chains |
|---|---|---|---|---|---|---|
| Gazebo | Yes | Yes | | Yes | Yes | Yes |
| RoboDK | Unknown | Unknown | | Unknown | Unknown | Unknown |
| SimSpark | Yes | No | SimSpark effectors | Unknown | Unknown | Unknown |
| Webots | Yes | Yes | Webots actuators | Yes | Yes | Yes |
| OpenRAVE | Yes | Yes | Joints , Extra Actuators | Yes [ 56 ] | Yes | Yes [ 57 ] |
| CoppeliaSim | Yes | Yes | | Yes | Yes | Yes |
| Software | Generic kinematic chains | Force-controlled motion | Full list | Circular kinematic chains | Kinematically redundant chains | Bifurcated kinematic chains |
Supported sensors
| Software | Odometry | IMU | Collision | GPS | Monocular cameras | Stereo cameras | Depth cameras | Omnidirectional cameras | 2D laser scanners | 3D laser scanners | Full list |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Gazebo | Yes | Yes | Yes [ 58 ] | Yes | Yes [ 59 ] | Yes | Yes | Yes | Yes [ 60 ] | Yes [ 60 ] | |
| RoboDK | Unknown | Unknown | Unknown | Unknown | Unknown | Yes | Yes | Yes | Yes | Yes | |
| SimSpark | Yes | Yes | Yes [ 61 ] | Partial [ 62 ] | Yes | Partial | Unknown | Unknown | No | No | SimSpark perceptors |
| Webots | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Webots sensors |
| OpenRAVE | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Unknown | Yes | Yes | |
| CoppeliaSim | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
| Software | Odometry | IMU | Collision | GPS | Monocular cameras | Stereo cameras | Depth cameras | Omnidirectional cameras | 2D laser scanners | 3D laser scanners | Full list |
References
cite-note-11. citerefosrfOSRF. "SDF". sdformat.org. Retrieved 2019-04-27.
cite-note-urdfref-22. "urdf - ROS Wiki". wiki.ros.org. Retrieved 2017-10-06.
cite-note-33. "RoboDK API". GitHub. 22 October 2021.
cite-note-44. "RoboDK Plug-In Interface". GitHub. 16 October 2021.
cite-note-55. However, requires a connection on an X server for 3D rendering
cite-note-66. "Gazebo Community". Retrieved 2019-04-27.
cite-note-77. "Gazebo API". Gazebo Community. Retrieved 2019-04-27.
cite-note-88. "Gazebo Answers". Gazebo Community. Retrieved 2019-04-27.
cite-note-99. "Gazebo Tutorials". Gazebo Community. Retrieved 2019-04-27.
cite-note-1010. "Gazebo Issue Tracker". Gazebo Community. Retrieved 2019-04-27.
cite-note-1111. RoboDK mailing list
cite-note-1212. RoboDK API Documentation
cite-note-1313. RoboDK Forum
cite-note-1414. RoboDK Documentation
cite-note-1515. RoboDK Bug tracker
cite-note-1616. SimSpark mailing lists
cite-note-1717. "SimSpark client protocols". Archived from the original on 2016-02-25. Retrieved 2015-04-08.
cite-note-1818. "SimSpark user manual (Wiki)". Archived from the original on 2015-02-25. Retrieved 2015-04-08.
cite-note-1919. SimSpark Tracker
cite-note-2020. SimSpark Wiki
cite-note-2121. Webots Reference Manual
cite-note-2222. "Discussions · cyberbotics/Webots". GitHub.
cite-note-2323. Webots User Guide
cite-note-2424. Webots issues on GitHub
cite-note-2525. Webots technical wiki on GitHub
cite-note-2626. Webots Discord channel
cite-note-2727. OpenRAVE mailing list
cite-note-2828. OpenRAVE API
cite-note-openrave-issue-tracker-2929. OpenRAVE Issue Tracker
cite-note-3030. OpenRAVE User Guide
cite-note-3131. OpenRAVE Wiki
cite-note-3232. CoppeliaSim API
cite-note-3333. Coppelia Robotics Forum
cite-note-3434. CoppeliaSim User Manual
cite-note-3535. Coppelia Robotics bug reports
cite-note-gazebostatus-3636. citerefosrfOSRF. "Gazebo". gazebosim.org. Retrieved 2019-04-27.
cite-note-3737. CppCheck
cite-note-3838. Clang Format
cite-note-3939. Unit tests
cite-note-4040. API tests
cite-note-4141. Webots master
cite-note-4242. Webots develop
cite-note-4343. Source
cite-note-4444. citerefosrfOSRF. "Gazebo : Tutorial : Beginner: Model Editor". gazebosim.org. Retrieved 2019-04-27.
cite-note-4545. citerefosrfOSRF. "Gazebo : Tutorial : Aerodynamics". gazebosim.org. Retrieved 2019-04-27.
cite-note-4646. citerefosrfOSRF. "Gazebo : Tutorial : Hydrodynamics". gazebosim.org. Retrieved 2019-04-27.
cite-note-4747. citerefosrfOSRF. "Gazebo : ARIAC". gazebosim.org. Retrieved 2019-04-27.
cite-note-4848. citerefosrfOSRF. "Gazebo : HAPTIX". gazebosim.org. Retrieved 2019-04-27.
cite-note-4949. "DARPA's legacy: Open source simulation for robotics development and testing". Robohub.org. Retrieved 2019-04-27.
cite-note-5050. citerefosrfOSRF. "Gazebo : Tutorial : Make an animated model (actor)". gazebosim.org. Retrieved 2019-04-27.
cite-note-robodk-robot-library-5151. RoboDK robot library
cite-note-5252. including Salamander robot
cite-note-5353. including Nao, DARwIn-OP, Fujitsu HOAP2, Kondo KHR-2HV, KHR-3, etc.
cite-note-5454. Webots robot models
cite-note-5555. CoppeliaSim main features
cite-note-5656. OpenRAVE Closed chains
cite-note-5757. OpenRAVE Dual-arm example
cite-note-5858. citerefosrfOSRF. "Gazebo : Tutorial : Contact Sensor". gazebosim.org. Retrieved 2019-04-27.
cite-note-5959. citerefosrfOSRF. "Gazebo : Tutorial : Camera Distortion". gazebosim.org. Retrieved 2019-04-27.
cite-note-lidartutorial-6060. citerefosrfOSRF. "Gazebo : Tutorial : Intermediate: Velodyne". gazebosim.org. Retrieved 2019-04-27.
cite-note-6161. Collision detection uses a simplified model
cite-note-6262. Possible, no model for noise